// 按需导入发送请求的函数
import { request } from '../../request/index.js'
// 默认导入的方式导入runtime.js文件
import regeneratorRuntime from '../../lib/runtime/runtime.js'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 商品详情数据-对象里面的属性只有用到的4个
    goodsDetailList: {},
    // 是否已经收藏
    isCollect: false
  },
  // 商品详情数据对象-完整的数据
  infoObj: {},

  /**
   * 生命周期函数--监听页面加载
   */
  onShow: function () {
    // 根据页面栈拿到url传递过来的参数goods_id
    let pages = getCurrentPages();
    const options = pages[pages.length - 1].options
    // console.log(options);
    // 获取到从商品列表中传递过来的参数 
    const goods_id = options.goods_id
    // console.log(goods_id);
    // 调用获取商品详情数据的函数
    this.getGoodsDetailList(goods_id)
  },
  // 获取商品详情数据的函数
  async getGoodsDetailList(goods_id) {
    const goodsDetailList = await request({ url: '/goods/detail', data: { goods_id } })
    // 把服务器端返回的数据赋值给infoObj对象
    this.infoObj = goodsDetailList
    // 从缓存中获取到收藏数组collect
    const collect = wx.getStorageSync("collect") || []
    // 判断该商品是否存在于收藏数组中
    const isCollect = collect.some(v => v.goods_id === this.infoObj.goods_id)

    //  把这个获取到的数据赋值给data中的goodsDetailList
    this.setData({
      isCollect,
      goodsDetailList: {
        pics: goodsDetailList.pics,
        goods_price: goodsDetailList.goods_price,
        goods_name: goodsDetailList.goods_name,
        goods_introduce: goodsDetailList.goods_introduce.replace(/\.webp/g, '.jpg')
      }
    })

  },
  // 用户点击预览大图的时候
  handPreviewImage(e) {
    console.log(e)
    // 获取到用户点击的那个图片的url
    const current = e.currentTarget.dataset.current
    // 所有要预览的大图的url组成的数组
    const urls = this.infoObj.pics.map(v => v.pics_mid)
    console.log(urls);
    // 使用wx.previewImage方法实现预览大图功能
    wx.previewImage({
      current,
      urls
    });

  },
  // 当用户点击加入购物车的时候触发
  handleCartAdd() {
    // 获取本地存储cart
    const cart = wx.getStorageSync('cart') || []
    // 再cart中查找当前的这个商品有没有
    const index = cart.findIndex(item => item.goods_id === this.infoObj.goods_id)
    if (index === -1) {
      // 没有找到 就添加进去num属性
      this.infoObj.num = 1
      // 再添加一个checked属性，初始值默认为true
      this.infoObj.checked = true
      cart.push(this.infoObj)
    } else {
      // 找到了 就++
      cart[index].num++
    }
    // 把最新的cart存储在本地
    wx.setStorageSync('cart', cart);
    // 弹窗提示加入成功
    wx.showToast({
      title: '加入成功',
      icon: 'success',
      mask: true,
    });

  },
  // 点击收藏的时候触发
  handleChangeCollect() {
    // 从缓存中获取到收藏数组
    let collect = wx.getStorageSync("collect") || []
    let isCollect = false
    // 遍历这个collect数组，看看里面有没有当前的商品
    const index = collect.findIndex(v => v.goods_id === this.infoObj.goods_id)
    // 如果index 不等于-1说明找到了，就把这个商品从collect数组里删除掉
    if (index !== -1) {
      collect.splice(index, 1)
      isCollect = false
      // 弹窗提示
      wx.showToast({
        title: '已经取消收藏',
        icon: 'success',
        mask: true,
      });
    } else {
      // 没有找到,就把这个商品添加到collect数组里面
      collect.push(this.infoObj)
      isCollect = true
      // 收藏成功，弹窗提示
      wx.showToast({
        title: '收藏成功',
        icon: 'success',
        mask: true
      });
    }
    // 把isCollect赋值到data中去
    this.setData({
      isCollect
    })
    // 把修改后的collect重新保存到缓存中去
    wx.setStorageSync("collect", collect)
  }
})